草庐IT

Android Explicit Intent 抛出 NoClassDefFounderror

全部标签

c++ - 如果抛出的异常总是异常对象的拷贝,为什么不调用这个复制构造函数?

斯科特迈耶斯说:C++specifiesthatanobjectthrownasanexceptionisalwayscopiedandthecopyingisperformedbytheobject'scopyconstructor.但是在我的代码中:structtest{test(){cout我没有看到异常对象的复制构造函数被调用。如果我将catch更改为按值接收异常对象,那么它就是这样,但根据Meyers的引述,即使通过引用接收异常对象也应该被复制。为什么不调用复制构造函数(即使通过引用执行异常处理)? 最佳答案 从语义上讲,

C++ 程序意外阻塞/抛出

我正在学习C++中的互斥锁,但以下代码(摘自N.Josuttis的“C++标准库”)有问题。我不明白为什么它会阻塞/抛出除非我在主线程中添加this_thread::sleep_for(然后它不会阻塞并且所有三个调用都是执行)。编译器是从命令行使用的cl.exe。#include#include#include#include#include#includestd::mutexprintMutex;voidprint(conststd::string&s){std::lock_guardlg(printMutex);for(charc:s){std::cout.put(c);}std:

C++ 抛出取消引用的指针

下面抛出的异常对象是什么类型:问题1>range_errorr("error");扔r;答案1>range_error的一个对象问题2>exception*p=&r;抛出*p;答案2>异常切片对象问题3>exception*p=&r;扔p;Answer3>抛出指向range_error的指针。捕获处理可以通过动态绑定(bind)访问range_error成员函数。我做对这些问题了吗?//在VS2010上更新编译运行#includeusingnamespacestd;classExClassA{public:virtualvoidPrintMe()const{coutPrintMe();

java - 从构造函数中抛出未处理的异常时会发生什么

当构造函数抛出未处理的异常时会发生什么?对于Java,对于C++?会不会有内存泄漏? 最佳答案 你问,“Whathappenswhenanunhandledexceptionisthrownfromaconstructor?ForJava,andforC++?Willtherebeamemoryleak?”未处理的异常是没有关联处理程序的异常。在C++中,任何未处理的异常都会终止程序。在这种情况下,堆栈是否展开是不确定的,即成功构造的局部变量的析构函数可能会被执行或不执行,具体取决于编译器。异常从何处抛出(例如在构造函数内部)无关紧

c++ - 处理异常时抛出异常

我正在阅读“C++ProgrammingLanguage4thedition”一书,对有关异常处理的段落有疑问:Therearecaseswhereexceptionhandlingmustbeabandonedforlesssubtleerror-handlingtechniques.Theguidingprinciplesare:Don'tthrowanexceptionwhilehandlinganexception.Don'tthrowanexceptionthatcan'tbecaught.Iftheexception-handlingimplementationcatche

kotlin - runBlocking 中的 deferred.await() 抛出的异常即使在被捕获后也被视为未处理

这段代码:funmain(){runBlocking{try{valdeferred=async{throwException()}deferred.await()}catch(e:Exception){println("Caught$e")}}println("Completed")}结果如下:Caughtjava.lang.ExceptionExceptioninthread"main"java.lang.Exceptionatorg.mtopol.TestKt$main$1$deferred$1.invokeSuspend(test.kt:11)...这种行为对我来说没有意义。异

kotlin - runBlocking 中的 deferred.await() 抛出的异常即使在被捕获后也被视为未处理

这段代码:funmain(){runBlocking{try{valdeferred=async{throwException()}deferred.await()}catch(e:Exception){println("Caught$e")}}println("Completed")}结果如下:Caughtjava.lang.ExceptionExceptioninthread"main"java.lang.Exceptionatorg.mtopol.TestKt$main$1$deferred$1.invokeSuspend(test.kt:11)...这种行为对我来说没有意义。异

c++ - 抛出异常并从函数返回结果

我刚学C++,想抛出一个异常,但我的函数的结果会是未定义的???std::vectorextract_notworking(std::vector&avec){std::vectorresult;if(avec.size()==0)//throwdomain_error("Cannotoperateonemptyvector!");//Cannotuseexceptionforitwouldyieldundefinedresultreturnresult;//dosomethinghere//...returnresult;}我该怎么办?返回一个空vector?如果我将异常抛给返回值的

c++ - 在静态库之外抛出 C++ 异常?

作为规则,异常不得传播模块边界,例如HerbSuttersC++编码标准(第62项)中解释的那样。当使用不同的编译器或仅使用编译器设置进行编译时,这可能会崩溃。我可以理解这个问题,例如的动态链接库。但我想知道它是否也适用于静态库。静态库是上述规则意义上的模块吗?如果库是使用其他编译器设置(例如对齐方式)编译的,如果从静态库中抛出异常并在应用程序中捕获,程序可能会崩溃? 最佳答案 通常,静态库必须由相同的编译器和相同的编译器设置(大部分)编译才能与交付物(动态库或可执行文件)兼容。然后,您可以在静态库的边界之外抛出异常,因为它与您的编

c++ - 如果与指针一起使用,dynamic_cast 何时会抛出异常?

我在源代码中使用dynamic_cast将指针转换为如下所示,Base*base=herestoringthepointer;Derived*derived=dynamic_cast(base);如果base没有类层次结构的指针,则转换失败并返回NULL。在接下来的几行中,我正在检查NULL。所以没问题。我遇到了故障转储,我的应用程序由于dynamic_cast抛出异常而崩溃。我知道dynamic_cast只有在与引用类型一起使用时才会抛出异常。知道当我在上面的源代码中使用指针时,dynamic_cast会抛出异常吗? 最佳答案 A